package com.steve.netty.nio;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;

/**
 * @Author: STEVE
 * @Description: 拷贝文件 transferFrom 方法
 * 使用 FileChannel(通道) 和 方法 transferFrom ，完成文件的拷贝
 * @since: 2025-07-18
 */
public class NIOFileChannel04 {

    public static void main(String[] args) throws Exception {
        // 创建相关流
        FileInputStream fileInputStream = new FileInputStream("D:\\repo\\Java_Summary\\Java_Middleware\\src\\main\\java\\com\\steve\\netty\\nio\\p1.jpg");
        FileOutputStream fileOutputStream = new FileOutputStream("D:\\repo\\Java_Summary\\Java_Middleware\\src\\main\\java\\com\\steve\\netty\\nio\\p2.jpg");

        // 获取各个流对应的fileChannel
        FileChannel sourceCh = fileInputStream.getChannel();
        FileChannel destCh = fileOutputStream.getChannel();

        // 使用transferFrom完成拷贝
        destCh.transferFrom(sourceCh, 0, sourceCh.size());

        // 关闭相关通道和流
        sourceCh.close();
        destCh.close();
        fileInputStream.close();
        fileOutputStream.close();
    }

}
